//---------------------------------------------------------------------------
This program was written by PMC (A.K.A. The Tall Man from TGC Forums),
10 October, 2018. It was written and tested using the official release of
DarkGDK 2010, along with a compiled DarkLights library using the (slightly
modified to work with DarkGDK) open-source code, freely available from the
official TGC Git repository of DarkBasic Pro, specifically the
"Dark-Basic-Pro-12.02.16" download.

This is to briefly test/demonstrate using DarkLights in DarkGDK, but I wound
up including a few other bells and whistles along the way, such as standard
movement, gravity, jumping, minor collision, etc.

Since at this time the DarkLights open-source code is buggy, it turns
everything white after it computes the LightMaps. This demo program works
around that by saving all the objects as individual files in a "Universe"
directory, then reloading them - thus restoring them. This demo program can
be run in 2 passes or just 1 (both passes). The first pass generates the
LightMaps. The second pass loads them for viewing. In either case, you can
still run around the room and look around.

Note: The Debug library of DarkLights runs a lot slower than the Release
      library. Also, sometimes the progress will stay at a certain percent
      for a long time. This is normal. The percent is not a function of
      time.
      
Suggested Use:
--------------
Run the program with the Load option set to false. This will allow
DarkLights to compute the LightMaps and save them and the LightMapped
objects as .dbo files. Then run it again with Load set to true. The scene
will load and be ready very quickly.


Keys:
   W     - Forward
   S     - Backward
   A     - Left
   D     - Right
   Q     - Up
   Z     - Down
   SHIFT - Triple your speed
   CTRL  - Duck
   SPACE - JUMP
   R     - Reset Player Position and Orientation
   
Another Usage Tip:
------------------
To continue viewing the original objects after they've been LightMapped
(i.e. when they've all been turned white), set:
   Load                    = false;
   DisableSave             = true;
   EnableDarkLights        = true;
   ExitAfterLMComputation  = false;
   
Additional Side Tip:
--------------------
In my experience...

When loading textures, if it's not completely native to DirectX, DarkGDK has
to take the time to convert it and mipmap it, not to mention that the format
it's converted to for rendering is not necessarily optimal. For fast loading
and fast rendering, convert all object textures to .dds, and use one of the
DXT formats, and ideally mipmap them yourself (that way DarkGDK doesn't have
to mipmap it every time it loads). You can use Microsoft's DirectX Texture
Tool for this. Note: The DTX formats are not lossless. With some textures,
there is a noticeable difference. With others the difference is
imperceivable.
//---------------------------------------------------------------------------   
